package com.fzj.example.jvm;


/**
 * 单例延迟初始化：由于类初始化是线程安全的，并且仅被执行一次，因此程序可以确保多线程环境下有且仅有一个 Singleton 实例
 */
public class Singleton {
    private Singleton() {};

    private static class LazyHolder{
        static final Singleton instance=new Singleton();

        static { System.out.println("LazyHolder.<clinit>"); }
    }

    public static Object getInstance(boolean flag){

        if (flag) return new LazyHolder[2];
        return LazyHolder.instance;
    }

    public static void main(String[] args) {
        getInstance(true);
        System.out.println("-----");
        getInstance(false);
    }



    void invoke(Object obj, Object... args) { return ; }
    void invoke(String s, Object obj, Object... args) { return ; }


}
